VOLUME 16

ASSEMBLERS, OTHER UTILITIES AND FOCAL

NUMBER	SIZE	NAME		COMMENTS

		CATALOG.16	CONTENTS OF CP/M GROUP VOL 16
		VOLUME16.DOC	COMMENTS ON CERTAIN PROGRAMS
16.1	9K	ASMX.COM	ASSEMBLER WHICH RECOGNIZES Z-80 OPS
				SEE VOL.DOC  [CAREFUL: WITH CORRECT
				SYNTAX (ASMX FILENAME.AAA) THIS DOES
				WORK.  WITH FAULTY SYNTAX THE PROGRAM
				TAKES REVENGE ON THE DISK DIRECTORY.]
				RUNS OK ON 8080
16.2	12K	COPYDSK.ASM	DISK COPY PROGRAM. SEE VOL.DOC
16.3	13K	COPYDSK.MAC	AS 16.2 FOR TDL ASSEMBLER
16.4	7K	CPMUTIL.ASM	CP/M SUBROUTINES USEFUL GENARALLY AND
				EMPLOYED AS PART OF Z80ASM 16.17
16.5	3K	EDIT.COM	INTEL-LIKE EDITOR. DOES L F B AND -B
				MUCH FASTER THAN ED.COM. SEE VOL.DOC
16.6	8K	EDUCATOR.ASM	8080 INSTRUCTION SET TUTOR FROM BYTE
				OF JULY 1976
16.7	57K	FOCAL.ASM	FOCAL LANGUAGE INTERPRETER. SEE VOL.DOC
16.8	8K	MACASM.COM	MACRO ASSEMBLER. SEE VOL.DOC
16.9	2K	MOVDOWN.ASM	PROGRAM TO LOAD FILE WHICH OPERATES BELOW
				100H
16.10	2K	SEEK.ASM	SET DISK TRACK FROM FRONT PANEL DURING
				ALIGNMENT
16.11	9K	SPAT1.ASM	RE-WRITE OF 1.29 TO GENERALIZE CONSOLE FROM
				ORIGINAL VDM DEPENDANCY
16.12	2K	TASMIO.DOC	DOC FOR TASMIO PATCH TO PUT TDL TAPE ASSEMBLER
				UP ON CP/M
16.13	3K	TASMIO.HEX	SEE TASMIO.DOC
16.14	18K	TASMIO.MAC	SEE TASMIO.DOC
16.15	3K	TEST1A.ASM	SUCCESSFUL TEST FOR Z80ASM 16.17
16.16	1K	TEST2.ASM	UNSUCCESSFUL TEST FOR Z80ASM 16.17
16.17	9K	Z80ASM.COM	ZILOG MNEMONIC ASSEMBLER. RUNS ON 8080. SEE
				Z80DOC.DOC 16.18
16.18	4K	Z80DOC.DOC	DOC FOR 16.17
16.19	28K	Z80MAIN.ASM	SEE 16.17
16.20	4K	Z80OPCDS.ASM	SEE 16.17
16.21	11K	Z80SUBS.ASM	SEE 16.17



	Z80DOC.DOC explains the Z80 Assembler routines which
follow.  Z80MAIN.ASM   Z80OPCDS.ASM   Z80SUBS.ASM   and the
assembled program Z80ASM.COM.  TEST1A.ASM and TEST2.ASM are short
test programs for the assembler.  This program was written and
donated to the user group by Mike Lehman for unrestricted
distrubution in the hobbyist community.
	COPYDSK.MAC is a disk copy routine written by Frank
Maclachlan in the TDL assembler format.  It is very different
from the version in Vol. 1 and performs a read and write
verify.  This routine was also rewritten for the CPM assembler
by Dick Mason and is included as COPYDSK.ASM.
	TASMIO.DOC explains how to patch the TDL Assembler to
operate with the CP/M system.  It includes TASMIO.HEX and
TASMIO.MAC.  The last one would be useful for any future
modifications.  This routine was written and donated by Frank
Maclachlan.
	SEEK.ASM is a simple utility routine which allows you
to select a desired track on a drive during alignment by use
of the front panel sense switches.

	SPAT1.ASM is a modified version of SPAT.ASM from Vol. 1
which is good for any terminal, not just the VDM.  Control
characters have been removed from the ASCII print and periods
inserted in their places.  This modification was made by Dick
Mason.
	MOVDOWN.ASM is a program used in conjunction with 
those that do not start a location 100.  It loads them at
location 100 and then automaticlly moves them to 0 or some
other address and starts.  This was written by Dick Mason.
	CPMUTIL.ASM is a different set of utilities for the
various I/O routines.  This was also donated by Mike
Lehman.

MACASM -- THIS IS A MACRO ASSEMBLER WITH CHARACTERISTICS SIMILAR
	TO THE INTEL ASSEMBLER.  WHEN USED UNDER CP/M, IT HAS
	THE FOLLOWING ADDITIONAL FEATURE:  ANOTHER OPTION FOR THE 
	LIST FILE IS THE LETTER 'P' WHICH SENDS THE LISTING TO THE
	LIST DEVICE DIRECTLY; E.G., ONE MIGHT TYPE
  
		MACASM LLLBASIC.AZP
 
	THIS WILL SEND THE LISTING DIRECTLY TO THE LIST DEVICE.
  
	THERE IS AT LEAST ONE KNOWN BUG (THE FIX IS UNKNOWN, HOWEVER)
	AND THAT IS THAT SOMETIMES WITH NESTED MACROS, LOCATIONS 5,6,
	AND 7 ARE CLOBBERED; THIS OF COURSE, KILLS COMMUNICATION
	WITH CP/M AND ALL IS DEAD.
  
ASMX -- THIS IS ANOTHER ASSEMBLER, WITHOUT MACROS, BUT WITH CROSS-
	REFERENCE MAP.  IT ALSO RECOGNIZES MNEMONICS FOR THE Z80.
	THE MNEMONICS IT RECOGNIZES ARE SIMILAR TO THOSE PROMULGATED
	BY TDL WITH THE EXCEPTION OF INDEX REGISTER OPERATIONS AND 
	THE INSTRUCTION DSBB (TDL USES DSBC).  ASSEMBLE THE FILE
	Z80-OPS.ASM TO SEE THE INDEX REGISTER OP CODE SYNTAX.
  
	---- CHARACTERISTICS OF THIS ASSEMBLER ---
  
	THE ASSEMBLER DOES NOT RECOGNIZE '!'
 
	THE DISK BUFFERS ARE ONLY 128 BYTES, SO THERE MAY BE MORE DISK
	ACTIVITY THAN WITH ASM.COM
 
	LABELS MUST BEGIN IN COLUMN ONE, AND SIX CHARACTERS OF THE
	LABEL ARE USED.
  
	INSTRUCTIONS MAY NOT BEGIN IN COLUMN ONE
 
	THE ASSEMBLER DOES NOT MIND LABELS THAT ARE THE SAME AS OP-
	CODES,E.G. JMP,ADD,SUB,END, ETC.
  
	LABELS NEED NOT BE FOLLOWED BY A COLON.
 
	CERTAIN ADDITIONAL PSEUDO-OPS ARE RECOGNIZED:
  
	LIST	-L	;TURNS OFF THE LISTING
 
	LIST	L	;TURNS THE LISTING BACK ON
 
	TP		;TABULATE PAGE- MOVES THE PC TO THE NEXT PAGE
 
	TM	VAL	;IF <VAL> BYTES REMAIN IN THE CURRENT PAGE,
			;THEN NOTHING HAPPENS; OTHERWISE MOVE THE PC
			;TO THE NEXT PAGE (IN OTHER WORDS, MAKE SURE
			;THAT AT LEAST <VAL> BYTES REMAIN IN THE CURRENT
			;PAGE)
  
	BASE	8	;CAUSES LISTING IN OCTAL
 
	BASE	16	;CAUSES LISTING IN HEX
 
EDIT -- THIS IS AN EDITOR SIMILAR TO CP/M'S ED.COM, BUT WITH COMMAND
	SYNTAX LIKE INTEL'S EDITOR FOR THOSE OF YOU WHO ARE USED TO 
	THAT.  THE ESCAPE CHAR IS USED AS A DELIMITER IN COMMAND LINES
	(IT IS ECHOED AS A $), AND A DOUBLE ESCAPE IS USED TO TERMINATE
	A COMMAND LINE. THIS EDITOR IS MUCH FASTER THAN EITHER THE INTEL
	EDITOR OR ED.COM; UNLIKE THE INTEL EDITOR, THIS ONE DOES HAVE 
	THE 'N' COMMAND AND THE 'Q' COMMAND; IT DOES NOT HAVE THE 'R'
	COMMAND, HOWEVER.  ANOTHER DIFFERENCE WITH RESPECT TO THE 
	INTEL EDITOR IS THAT THE 'A' COMMAND ONLY APPENDS ONE LINE,
	BUT YOU CAN SAY 9999A TO APPEND MUCH.  THE EDITOR CREATES
	A THIRD FILE WITH TYPE $$$ WHICH IS RENAMED WHEN THE EDIT JOB
	IS COMPLETE.  THIS MEANS THAT IF YOU ARE EDITING A FILE WHICH
	OCCUPIES OVER HALF OF THE DISK, YOU MUST ERASE ANY PRE-EXISTING
	BACK-UP FILE SO THAT THERE WILL BE ROOM FOR THE TEMPORARY.  IF 
	YOU DON'T, YOU WILL GET A DISK FULL ERROR.  IN FIND OR 
	SUBSTITUTE COMMANDS, THE CHARACTER '|' WILL MATCH ANY CHARACTER.
	IF YOU WANT TO CHANGE THIS CHARACTER, LOOK FOR THE SEQUENCE
	FE, 7C  IN THE CODE AND CHANGE THE 7C TO THE CHARACTER YOU
	PREFER.

	[A.R.G SUMMARY OF COMMANDS COMPARED WITH ED.COM

	NOTE () ARE TO INDICATE A CONTROL CHARACTER, <> USED LITERALLY

	ED.COM		EDITOR.COM	

	B		B
	-B		Z
	E		E
	Q		Q
	C		C
	T		T
	L		L
	K		K
	D		D
	I		I
	A		A
	W		W
	N		N
	#		65536
	M		<>		SEE EXTENDED COMMAND BELOW  
	P		NONE
	H		NONE
	O		NONE
	R		NONE
	(SUB)		(ESC)	    (AS TERMINATOR IN SEARCHES)
	(CR)		(ESC) (ESC) (TO EXECUTE COMMANDS)
	(CR)		NONE	    (TO CAUSE LT SEQUENCE)
	ANY CHARACTER	(NUL)	    (TO INTERUPT PRINTING)


	EXTENDED COMMAND:

	2MF.ASM(SUB)0LK(CR)  2<F.ASM(ESC)0LK>(ESC)(ESC)   


	CONTROL CHARACTERS REFERENCED ABOVE:

	(CR)	:=	0DH	^M	RETURN
	(SUB)	:=	1AH	^Z
	(ESC)	:=	1BH	^[	ESCAPE
	(NUL)	:=	00H	^@	BREAK		]


  
FOCAL.ASM -- THIS IS THE FOCAL THAT PROCESSOR TECHNOLOGY WAS 
	DISTRIBUTING IN 1976 ON BLUE XEROX-PROOF PAPER.  IT HAS SOME
	KNOWN BUGS: EXPONENTIATION DOESN'T WORK AND IT HAS NO OPERATOR
	PRECEDENCE.  I HAVE ADDED A FEW THINGS:  I/O FOR CP/M (JUST
	CONSOLE I/O) AND A ROUTINE TO LIST THE ERROR MESSAGES.  LOAD
	FOCAL WITH DDT AND JUMP TO 103H; A LIST OF THE ERROR MESSAGES
	WILL BE PRINTED.  A NOTE OF INTEREST-THE FLOATING POINT PACKAGE
	IN FOCAL IS FROM THE INTEL USERS LIBRARY AND WAS ORIGINALLY
	WRITTEN FOR THE 8008 CPU.
	[A.R.G. I understand that the exponentiation error only
	occurs (symptom x^y results in y^y) with the 100H origin.
	May give a clue to finding page-dependant routine]
 
EDUCATOR.ASM -- THIS IS FROM BYTE MAGAZINE OF JULY 1976
 
